//
// Created by Yun on 2025/3/3.
//

#ifndef FRMAEWORK_DEMO_GPIO_GPIO_INTERFACE_H
#define FRMAEWORK_DEMO_GPIO_GPIO_INTERFACE_H

#include "interface_common_type.h"


/*---------------------- 类型定义 ----------------------*/
/**
  * @brief  GPIO设备操作接口结构体
  */
typedef struct Gpio_Interface {
    /**
      * @brief  硬件初始化函数
      * @param  pGpio_Hw: GPIO硬件配置指针（需强转为Gpio_Hw_Cfg_TypeDef使用）
      * @retval BSP_Status_TypeDef 操作状态码
      *         @arg BSP_OK: 初始化成功
      *         @arg BSP_ERROR: 参数错误或无效GPIO端口
      */
    uint8_t (*Init)(void* pGpio_Hw);

    /**
      * @brief  写入GPIO状态
      * @param  pGpio_Hw: GPIO硬件配置指针
      * @param  u8State: 目标状态（GPIO_PIN_SET/GPIO_PIN_RESET）
      * @retval BSP_Status_TypeDef 操作状态码
      *         @arg BSP_OK: 初始化成功
      *         @arg BSP_ERROR: 参数错误或无效GPIO端口
      */
    uint8_t (*Write)(void* pGpio_Hw, uint8_t u8State);

    /**
      * @brief  读取GPIO状态
      * @param  pGpio_Hw: GPIO硬件配置指针
      * @param  pu8State: 状态输出缓冲区指针
      * @retval BSP_Status_TypeDef 操作状态码
      *         @arg BSP_OK: 初始化成功
      *         @arg BSP_ERROR: 参数错误或无效GPIO端口
      */
    uint8_t (*Read)(void* pGpio_Hw, uint8_t* pu8State);
} Gpio_Interface_TypeDef;


#endif //FRMAEWORK_DEMO_GPIO_GPIO_INTERFACE_H
